package fiuba.algo3.persistencia;

import java.util.List;

import fiuba.algo3.XMLProcessor.nucleo.NodoXML;

public abstract class ConstructorArreglos
{

	public static Object[] construir(NodoXML nodoObjetoArreglo)
	{
		if (!nodoObjetoArreglo.nombre().equals("arreglo")) return null;
		List<NodoXML> tablaValores = nodoObjetoArreglo.obtenerHijos();

		int cantidadElementos = tablaValores.size();
		int cantidadEsperada = Integer.parseInt(nodoObjetoArreglo.obtenerValorAtributo("cantidad"));

		if (cantidadElementos != cantidadEsperada)
			{
				System.err.println("ConstructorArreglos: Se esperaban" + cantidadEsperada + "elementos. Se encontraron: " + cantidadElementos);
			}

		Object arreglo[] = new Object[cantidadElementos];
		for (int i = 0; i < cantidadElementos; i++)
			{
				String valor = tablaValores.get(i).nombre();
				if (valor.equals("primitivo"))
					arreglo[i] = ConstructorPrimitivos.construir(tablaValores.get(i));
				else if (valor.equals("arreglo"))
					arreglo[i] = construir(tablaValores.get(i));
				else if (valor.equals("objeto"))
					arreglo[i] = ConstructorObjetos.construir(tablaValores.get(i));
				else
					arreglo[i] = null;
			}

		return arreglo;
	}
}
